package com.zl.cms.service;

import com.zl.basic.model.Pager;
import com.zl.cms.model.Topic;

/**
 * User: zl email:c3tc3tc3t@126.com Date: 14-3-16 Time: 下午4:12
 */

public interface ITopicService {
  /**
   * 添加带有附件信息的文章
   * 
   * @param topic 文章
   * @param cid 文章所属的栏目的id
   * @param uid 发表文章的用户id
   * @param aids 文章的附件的id，多个附件
   */
  public void add(Topic topic, int cid, int uid, Integer[] aids);

  /**
   * 添加不带附件文章
   * 
   * @param topic 文章
   * @param cid 文章所属的栏目的id
   * @param uid 发表文章的用户id
   */
  public void add(Topic topic, int cid, int uid);

  /**
   * 删除文章，先删除文章的附件，还得删除附件的文件对象
   * 
   * @param id 文章id
   */
  public void delete(int id);


  /**
   * 更新文章,带附件更新
   * 
   * @param topic 文章
   * @param cid 文章所属的栏目的id
   * @param aids 文章的附件的id，多个附件
   */
  public void update(Topic topic, int cid, Integer[] aids);

  /**
   * 没有带附件信息的文章更新
   * 
   * @param topic 文章
   * @param cid 文章所属的栏目的id
   */
  public void update(Topic topic, int cid);

  /**
   * 加载一片文章
   * 
   * @param id 文章id
   * @return 文章对象
   */
  public Topic load(int id);

  /**
   * 根据栏目和标题和文章状态进行文章的检索
   * 
   * @param cid 栏目id
   * @param title 文章标题
   * @param status 文章状态
   * @return 分页对象，包含检索到的文章，分页信息
   */
  public Pager<Topic> find(Integer cid, String title, Integer status);

  /**
   * 根据文章作者,栏目和标题和文章状态进行文章的检索
   * 
   * @param cid 栏目id
   * @param status 文章状态
   * @param title 文章标题
   * @return 分页对象，包含检索到的文章，分页信息
   */
  public Pager<Topic> find(Integer uid, Integer cid, String title, Integer status);

  /**
   * 根据栏目和标题进行文章的检索
   * 
   * @param keyword 文章关键字
   * @return 分页对象，包含检索到的文章，分页信息
   */
  public Pager<Topic> searchTopicByKeyword(String keyword);

  /**
   * 
   * 通过某个条件来检索 该条件会从标题，内容，关键字里,摘要里来检索
   * 
   * @param con 条件字符串
   * @return 分页对象，包含检索到的文章，分页信息
   */
  public Pager<Topic> searchTopic(String con);

  /**
   * 检索某个栏目的文章
   * 
   * @param cid 栏目id，cid为空，检索全部文章
   * @return 检索到的文章
   */
  public Pager<Topic> findRecommendTopic(Integer cid);

  /**
   * 更新文章的状态
   * 
   * @param tid 文章id
   */
  public void updateStatus(int tid);
}
